#pragma once
#include "elemento.h"
#include "Punto.h"
#include "math.h"

class Pelota :
	public Elemento
{
private:
	string nombre;
	string idColor;
	double radio;
	double anguloTrayectoria; //en grados
	double incremento;
	bool estaEnCarril;
	//Estos atributos solo sirven si esta en el carril
	//Estos Puntos sirven para diferenciar el tramo del carril donde se
	//encuentra la pelota que afectara su movimiento
	Punto* puntoIzq;
	Punto* puntoDer;
	bool   estaActiva;
	int    tramo;
public:
	Pelota* Clonar();
	Punto* GetPuntoIzq(){ return puntoIzq;};
	void   SetPuntoIzq(Punto* p){ this->puntoIzq = p;};
	Punto* GetPuntoDer(){ return puntoDer;};
	void   SetPuntoDer(Punto* p){ this->puntoDer = p;};
	double getRadio(void){return this->radio;}
	void   setRadio(double r){this->radio = r;}
	string inline GetColor(){return idColor;};
	void   inline SetColor(string c){idColor = c;};
	void Dibujar(SDL_Surface *screen);
	void CargarTextura();

	double getNorte(void);
	double getSur(void);
	double getEste(void);
	double getOeste(void);
	Punto getSiguientePosicion(void);
	
	double getAnguloTrayectoria(void);
	void setAnguloTrayectoria(double angulo);

	double getAnguloTrayectoriaFixed(void);
	
	double getIncremento(void);
	void setIncremento(double inc);

	//Seteo si esta o no en el carril
	void setEstaEnCarril(bool encarril);
	//Si verdadero, la pelota esta en el carril.
	bool esParteDelCarril(void);

	//Seteo si esta o no activa
	void setEstado(bool estado){ this->estaActiva = estado;};

	//Obtengo si esta activa
	bool getEstado() { return this->estaActiva;};

    //Obtengo el color id
	string getIdColor() { return this->idColor;};

	//Get and set tramo
	int    getTramo(){ return this->tramo;};
	void   setTramo(int tramo){ this->tramo = tramo;};

	void   SetNombre(string nom) { this->nombre = nom;}
	string GetNombre()			 { return nombre;}


	Pelota(Textura* fondo, double rad,double posx,double posy, string idn,double anguloTrayectoria,bool estaEnCarril);
	Pelota(){;};
	~Pelota(void);
};
